<script setup lang="ts">
import { K_Means } from '@/service'
const value = ref()
const { VITE_BACKEND_URL } = import.meta.env
 

const cbValue = ref()
const cbOption = ref()
const cbPathValues = ref()
const kmeansImg = ref()
kmeansImg.value = VITE_BACKEND_URL+"/static/kmeans.png"
function handleUpdateValue(value: string, option: any, pathValues: any[]) {
  cbValue.value = value
  cbOption.value = { code: option.code, name: option.name }
  cbPathValues.value = pathValues.map(i => ({ code: i.code, name: i.name }))
}

const formRef = ref()
const formValue = ref({
  region: null,
})

async function handleValidateClick() {
  const res = await K_Means()
  kmeansImg.value = VITE_BACKEND_URL+"/static/"+res.data
  console.log(res.data)
}


</script>

<template>
  <n-card title="K-means">
  KMeans 算法通过把样本分离成 n 个具有相同方差的类的方式来对数据进行聚类，最小化一个称为惯量或簇内平方和的准则（见下文）。该算法需要指定簇的数量。它可以很好地扩展到大量样本，并已经在许多不同领域的应用领域被广泛使用。
  K-means 通常被称为 Lloyd 算法。简单来说，算法有三个步骤。第一步是选择初始质心，最基本的方法是从数据集中选择个样本。初始化之后，K-means由其他两个步骤之间的循环组成。第一步将每个样本分配到其最近的质心。第二步是通过取分配给前一个质心的所有样本的平均值来创建新的质心。计算新旧质心之间的差值，算法重复最后两个步骤，直到该值小于阈值。换句话说，算法重复这个步骤，直到质心不再明显移动。    
  <n-button attr-type="button" @click="handleValidateClick">
          测试
        </n-button>
        <img
 
      :src="kmeansImg"
      alt=""
      class="test-img"
    >
  </n-card>
</template>

<style scoped></style>
